package org.jsola.hr.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;
import org.jsola.core.dto.BaseDTO;

import java.util.Date;

import static org.jsola.hr.example.AttendPlanExample.E_COMPANY_ID;
import static org.jsola.hr.example.AttendPlanExample.E_COMPANY_NAME;
import static org.jsola.hr.example.AttendPlanExample.E_IS_MAKE_UP;
import static org.jsola.hr.example.AttendPlanExample.E_IS_ONLY_PHOTO;
import static org.jsola.hr.example.AttendPlanExample.E_IS_REMIND;
import static org.jsola.hr.example.AttendPlanExample.E_IS_SYNCH_LEGAL_HOLIDAY;
import static org.jsola.hr.example.AttendPlanExample.E_IS_TAKE_PHOTO;
import static org.jsola.hr.example.AttendPlanExample.E_MAX_MAKE_UP_COUNTS;
import static org.jsola.hr.example.AttendPlanExample.E_NAME;
import static org.jsola.hr.example.AttendPlanExample.E_OVERTIME_RULE;
import static org.jsola.hr.example.AttendPlanExample.E_PLAN_TYPE;
import static org.jsola.hr.example.AttendPlanExample.E_PUNCH_LOCATION_JSON;
import static org.jsola.hr.example.AttendPlanExample.E_PUNCH_RANGE;
import static org.jsola.hr.example.AttendPlanExample.E_PUNCH_WIFI_JSON;
import static org.jsola.hr.example.AttendPlanExample.E_REMIND_AFTER;
import static org.jsola.hr.example.AttendPlanExample.E_REMIND_BEFORE;
import static org.jsola.hr.example.AttendPlanExample.E_START_EFFECT_TIME;
import static org.jsola.hr.example.AttendPlanExample.E_TAKE_EFFECT;
import static org.jsola.hr.example.AttendPlanExample.M_COMPANY_ID_MAX;
import static org.jsola.hr.example.AttendPlanExample.M_COMPANY_NAME_MAX;
import static org.jsola.hr.example.AttendPlanExample.M_NAME_MAX;
import static org.jsola.hr.example.AttendPlanExample.M_PUNCH_LOCATION_JSON_MAX;
import static org.jsola.hr.example.AttendPlanExample.M_PUNCH_WIFI_JSON_MAX;
import static org.jsola.hr.example.AttendPlanExample.N_COMPANY_ID;
import static org.jsola.hr.example.AttendPlanExample.N_COMPANY_NAME;
import static org.jsola.hr.example.AttendPlanExample.N_IS_MAKE_UP;
import static org.jsola.hr.example.AttendPlanExample.N_IS_ONLY_PHOTO;
import static org.jsola.hr.example.AttendPlanExample.N_IS_REMIND;
import static org.jsola.hr.example.AttendPlanExample.N_IS_SYNCH_LEGAL_HOLIDAY;
import static org.jsola.hr.example.AttendPlanExample.N_IS_TAKE_PHOTO;
import static org.jsola.hr.example.AttendPlanExample.N_MAX_MAKE_UP_COUNTS;
import static org.jsola.hr.example.AttendPlanExample.N_NAME;
import static org.jsola.hr.example.AttendPlanExample.N_OVERTIME_RULE;
import static org.jsola.hr.example.AttendPlanExample.N_PLAN_TYPE;
import static org.jsola.hr.example.AttendPlanExample.N_PUNCH_LOCATION_JSON;
import static org.jsola.hr.example.AttendPlanExample.N_PUNCH_RANGE;
import static org.jsola.hr.example.AttendPlanExample.N_PUNCH_WIFI_JSON;
import static org.jsola.hr.example.AttendPlanExample.N_REMIND_AFTER;
import static org.jsola.hr.example.AttendPlanExample.N_REMIND_BEFORE;
import static org.jsola.hr.example.AttendPlanExample.N_START_EFFECT_TIME;
import static org.jsola.hr.example.AttendPlanExample.N_TAKE_EFFECT;

/**
 * @author zhr
 */
@EqualsAndHashCode(callSuper = true)
@ApiModel(description = "新增【考勤方案】的参数")
@Data
public class AttendPlanAddDTO extends BaseDTO {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(notes = N_COMPANY_ID, example = E_COMPANY_ID)
    @Length(max = 32, message = M_COMPANY_ID_MAX)
    private String companyId;

    @ApiModelProperty(notes = N_COMPANY_NAME, example = E_COMPANY_NAME)
    @Length(max = 100, message = M_COMPANY_NAME_MAX)
    private String companyName;

    @ApiModelProperty(notes = N_NAME, example = E_NAME)
    @Length(max = 100, message = M_NAME_MAX)
    private String name;

    @ApiModelProperty(notes = N_PLAN_TYPE, example = E_PLAN_TYPE)
    private Integer planType;

    @ApiModelProperty(notes = N_PUNCH_LOCATION_JSON, example = E_PUNCH_LOCATION_JSON)
    @Length(max = 65535, message = M_PUNCH_LOCATION_JSON_MAX)
    private String punchLocationJson;

    @ApiModelProperty(notes = N_PUNCH_WIFI_JSON, example = E_PUNCH_WIFI_JSON)
    @Length(max = 65535, message = M_PUNCH_WIFI_JSON_MAX)
    private String punchWifiJson;

    @ApiModelProperty(notes = N_OVERTIME_RULE, example = E_OVERTIME_RULE)
    private Integer overtimeRule;

    @ApiModelProperty(notes = N_IS_SYNCH_LEGAL_HOLIDAY, example = E_IS_SYNCH_LEGAL_HOLIDAY)
    private Boolean isSynchLegalHoliday;

    @ApiModelProperty(notes = N_IS_REMIND, example = E_IS_REMIND)
    private Boolean isRemind;

    @ApiModelProperty(notes = N_REMIND_BEFORE, example = E_REMIND_BEFORE)
    private Integer remindBefore;

    @ApiModelProperty(notes = N_REMIND_AFTER, example = E_REMIND_AFTER)
    private Integer remindAfter;

    @ApiModelProperty(notes = N_IS_TAKE_PHOTO, example = E_IS_TAKE_PHOTO)
    private Boolean isTakePhoto;

    @ApiModelProperty(notes = N_IS_ONLY_PHOTO, example = E_IS_ONLY_PHOTO)
    private Boolean isOnlyPhoto;

    @ApiModelProperty(notes = N_PUNCH_RANGE, example = E_PUNCH_RANGE)
    private Integer punchRange;

    @ApiModelProperty(notes = N_IS_MAKE_UP, example = E_IS_MAKE_UP)
    private Boolean isMakeUp;

    @ApiModelProperty(notes = N_MAX_MAKE_UP_COUNTS, example = E_MAX_MAKE_UP_COUNTS)
    private Integer maxMakeUpCounts;

    @ApiModelProperty(notes = N_TAKE_EFFECT, example = E_TAKE_EFFECT)
    private Integer takeEffect;

    @ApiModelProperty(notes = N_START_EFFECT_TIME, example = E_START_EFFECT_TIME)
    private Date startEffectTime;


}

